package com.ssy.lingxi.product.service.platform;

import com.ssy.lingxi.common.constant.tree.Node;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.product.entity.platform.AttributeValue;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 属性值管理类
 * @author jw.chen
 * @version 2.0.0
 * @date 2020/6/22
 */
public interface IAttributeValueService {

    /**
     * 查询属性值树
     * @return Wrapper<List<Node>>
     */
    List<Node> getAttributeValueTree();

    /**
     * 查询属性
     * @param pageVO
     * @param isEnable
     * @param attributeId
     * @param value
     * @return Wrapper<?>
     */
    Page<AttributeValue> getAttributeValueList(PageVO pageVO, Boolean isEnable, Long attributeId, String value);

    /**
     * 查询同步属性值列表
     * @param attributeGroupName 属性组名称
     * @param attributeName 属性名称
     * @param attributeValue 属性值
     * @param pageVO 分页实体
     * @return
     */
    Page<AttributeValue> getSyncAttributeValueList(PageVO pageVO, String attributeGroupName, String attributeName, String attributeValue);

    /**
     * 查询属性值
     * @param attributeValueId
     * @return Wrapper<?>
     */
    AttributeValue getAttributeValue(Long attributeValueId);

    /**
     * 添加/修改属性值
     * @param attributeValue
     * @return
     * @throws Exception
     */
    String saveOrUpdateAttributeValue(AttributeValue attributeValue);

    /**
     * 删除属性值
     * @param attributeValueId
     * @return
     */
    String deleteAttributeValue(Long attributeValueId);

    /**
     * 启用/停用属性值
     * @param id
     * @param status
     * @return
     */
     String updateAttributeValueStatus(Long id, Boolean status);

}
